﻿using System;
using System.Collections.Generic;
using UD.EXTUD.Business;
using UD.Utilities.Exceptions;
using Icbf.EXTUD.Entity;

namespace UD.EXTUD.Service
{
    public class EXTUDService
    {
        private CursoBLL oCursoBLL;
        private ConvenioBLL oConvenioBLL;

        public EXTUDService()
        {
            oCursoBLL = new CursoBLL();
            oConvenioBLL = new ConvenioBLL();
        }


        #region Curso

        public int InsertarCurso(Curso pCurso)
        {
            try
            {
                return oCursoBLL.InsertarCurso(pCurso);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }
        public int ModificarCurso(Curso pCurso)
        {
            try
            {
                return oCursoBLL.ModificarCurso(pCurso);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }
        public int EliminarCurso(Curso pCurso)
        {
            try
            {
                return oCursoBLL.EliminarCurso(pCurso);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        public Curso ConsultarCurso(int pIdCurso)
        {
            try
            {
                return oCursoBLL.ConsultarCurso(pIdCurso);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        public List<Curso> ConsultarCursos(int? pIdTipoCurso, String pNombreCurso, DateTime? pFechaInicioCurso, DateTime? pFechaFinalizacionCurso, Decimal? pValorCurso, int? pIdProyectoCurricular)
        {
            try
            {
                return oCursoBLL.ConsultarCursos(pIdTipoCurso, pNombreCurso, pFechaInicioCurso, pFechaFinalizacionCurso, pValorCurso, pIdProyectoCurricular);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region Convenio

        public int InsertarConvenio(Convenio pConvenio)
        {
            try
            {
                return oConvenioBLL.InsertarConvenio(pConvenio);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        public List<Convenio> ConsultarConvenios(String pNombreConvenio, String pEstadoConvenio, String pContratante, int? pDuracionConvenio)
        {
            try
            {
                return oConvenioBLL.ConsultarConvenios(pNombreConvenio, pEstadoConvenio, pContratante, pDuracionConvenio);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion
    }
}
